const picture = require('../models/picture');
const log = require('log4js').getLogger("picture");
const systemlogs = require('../models/systemlogs');
/**
 * 添加图片
 */
exports.add_picture=function(req,res){
    const args = req.body;
    if(!args.name){
        return res.send({success:false,data:'请给您的美物起个名字吧！'});
    };
    if(!args.imgurl){
        return res.send({success:false,data:'您的美物在哪儿呢？'});
    };
    if(!args.size){
        return res.send({success:false,data:'您的美物有多大呢？'});
    };
    if(!args.type){
        return res.send({success:false,data:'给您的美物添加个分类吧！'});
    };
    let user = req.user;
    let address = args.address;
    let location={};
    location.lat=args.lat;
    location.lng=args.lng;
    let point ={
        address,
        location
    };
    const params = [
        args.name,//图片名称
        args.imgurl,//图片链接
        args.size,//图片大小
        args.path,//1：手机；2：网页,后台添加都是网页
        args.type,//所属分类id
        args.want>0?1:0,//想要人数（最少一个，创建者本人）
        args.own>0?1:0,//拥有人数（至少有创建者自己）
        1,//图片状态
        args.recommend?args.recommend:2,//是否推荐，默认不推荐
        new Date(),//发布时间
        0,//粉丝数，默认是0（图片不知道有没有粉丝，粉丝不知道是想要的还是拥有的）
        user.username,//用户名
        args.desc?args.desc:null,//图片描述
        user.id,//作者id
        args.address?point:null,//图片地址经纬度和概括地址
        1,//图片为被删除
        args.height?Number(args.height):Number(0)//图片地址经纬度和概括地址
    ];
    picture.add_picture(params, user, args, function(err,result){
        if(err){//报错
            return res.send({success:false,data:err});
        }else if(result == 'null'){//添加失败
            return res.send({success:false,data:'很遗憾，您尚未注册!'});
        }else if(result == 'null_type'){//添加失败
            return res.send({success:false,data:'很遗憾，没有该分类!'});
        }else if(result == 'exit_name'){//添加失败
            return res.send({success:false,data:'很遗憾，您添加的图片名已存在!'});
        }else if(result == null){//添加失败
            return res.send({success:false,data:'很遗憾，您添加美物失败!'});
        }else {//添加成功
            return res.send({success:true, data:'恭喜您，添加美物成功！'});
        }
    });
};
/**
 * 多条件查询图片列表
 * @param req
 * @param res
 */
exports.list_b = function(req,res){

    let date = new Date();
    let nowYear = date.getFullYear();
    let nowMonth = date.getMonth() + 1;  //注意getMonth从0开始
    let nowDay = date.getDate();
    let d1=nowYear + ',' + nowMonth + ',' + nowDay ;   //将当前日期的年月日整合到d中
    let d2=new Date(new Date(d1).getTime() - 86400000);   //将当前日期的年月日整合到d中
    let d3=new Date(new Date(d1).getTime() - (86400000*2));   //将当前日期的年月日整合到d中
    let d4=new Date(new Date(d1).getTime() - (86400000*7));   //将当前日期的年月日整合到d中
    let d5=new Date(new Date(d1).getTime() - (86400000*30));   //将当前日期的年月日整合到d中
    let date1 = new Date(d1);   //获取当日00：00：00的标准时间
    let date2 = new Date(d2);   //获取昨日00：00：00的标准时间
    let date3 = new Date(d3);   //获取前天00：00：00的标准时间
    let date4 = new Date(d4);   //获取一周前00：00：00的标准时间
    let date5 = new Date(d5);   //获取30天前00：00：00的标准时间
    // let date = new Date(),
    //     nowYear = date.getFullYear(),
    //     nowMonth = date.getMonth() + 1,  //注意getMonth从0开始
    //     nowDay = date.getDate()
    // let d1=nowYear + ',' + nowMonth + ',' + nowDay ;   //将当前日期的年月日整合到d中
    // let date1 = new Date(d1);   //获取当日00：00：00的标准时间
    const args = req.query;
    const limit = args.limit;
    const page = Number(args.page);
    let params = [];
    if(!limit){
        return res.send({success:false,data:'您想每页显示多少条呢？'});
    }
    if(!page){
        return res.send({success:false,data:'您当前是哪一页呢？'});
    }
    if(args.type && args.type !='all'){
        params.push(args.type);//分类
    }
    if(args.keyword){
        params.push('%'+args.keyword+'%')//根据关键字模糊查询
    }
    if(args.recomment){
        params.push('%'+args.keyword+'%')//根据关键字模糊查询
    }
    if(args.createtime == 'new'){
        params.push(date2),//昨日新增
        params.push(date1)//当日新增
    }
    if(args.createtime == 'yesterday'){
        params.push(date3),//前天新增
        params.push(date2)//昨天新增
    }
    if(args.createtime == 'weak'){
        params.push(date4),//一周新增
        params.push(date1)//当日新增
    }
    if(args.createtime == 'month'){
        params.push(date5),//30天新增
        params.push(date1)//当日新增
    }
    params.push(1);
    // if(args.sotring){
    //     params.push(args.sotring);//排序
    // }
    params.push(limit);//分页信息
    params.push(limit*(page-1));//分页信息
    picture.list_b(params, args, function(err,result){//去执行查询语句
        if(err){
            return res.send({success:false,data:err});//报错
        }else {
            return res.send({success:true,data:result.rows})//对result进行处理
        }
    });
};

/**
 * 多条件查询图片列表数据统计
 * @param req
 * @param res
 */
exports.count_b = function(req,res){
    let date = new Date();
    let nowYear = date.getFullYear();
    let nowMonth = date.getMonth() + 1;  //注意getMonth从0开始
    let nowDay = date.getDate();
    let d1=nowYear + ',' + nowMonth + ',' + nowDay ;   //将当前日期的年月日整合到d中
    let d2=new Date(new Date(d1).getTime() - 86400000);   //将当前日期的年月日整合到d中
    let d3=new Date(new Date(d1).getTime() - (86400000*2));   //将当前日期的年月日整合到d中
    let d4=new Date(new Date(d1).getTime() - (86400000*7));   //将当前日期的年月日整合到d中
    let d5=new Date(new Date(d1).getTime() - (86400000*30));   //将当前日期的年月日整合到d中
    let date1 = new Date(d1);   //获取当日00：00：00的标准时间
    let date2 = new Date(d2);   //获取昨日00：00：00的标准时间
    let date3 = new Date(d3);   //获取前天00：00：00的标准时间
    let date4 = new Date(d4);   //获取一周前00：00：00的标准时间
    let date5 = new Date(d5);   //获取30天前00：00：00的标准时间
    const args = req.query;
    let params = [];
    if(args.type && args.type !='all'){
        params.push(args.type);//分类
    }
    if(args.keyword){
        params.push('%'+args.keyword+'%')//根据关键字模糊查询
    }
    if(args.createtime == 'new'){
        params.push(date2),//昨日新增
            params.push(date1)//当日新增
    }
    if(args.createtime == 'yesterday'){
        params.push(date3),//前天新增
            params.push(date2)//昨天新增
    }
    if(args.createtime == 'weak'){
        params.push(date4),//一周新增
            params.push(date1)//当日新增
    }
    if(args.createtime == 'month'){
        params.push(date5),//30天新增
            params.push(date1)//当日新增
    }
    params.push(1);//未删除
    picture.count_b(params, args, function(err,result){//去执行查询语句
        if(err){
            return res.send({success:false,data:err});//报错
        }else {
            return res.send({success:true,data:result.rowCount})//对result进行处理
        }
    });
};
/**
 * 图片详情
 * @param req
 * @param res
 * @returns {*}
 */
exports.info = function(req, res){
    const args = req.query;
    if(!args.id){
        return res.send({success:false,data:'缺少图片id'});
    }
    const params = [
        args.id,
        1,
        1
    ];
    picture.info (params, args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null'){
            return res.send({success:false,data:'您选的的图片信息有误'});
        }else {
            return res.send({success:true,data:result});
        }
    });
};
/**
 * 后台编辑图片
 * @param req
 * @param res
 */
exports.edit_b = function(req,res){
    const args = req.body;
    let params = [];
    if(!args.id){
        return rs.send({success:false,data:'请确认您要编辑的图片（id）'});
    }
    if(args.name){
        params.push(args.name);//编辑名称
    }
    if(args.imgurl){
        params.push(args.imgurl);//编辑url地址
    }
    if(args.size){
        params.push(args.size);//编辑图片大小
    }
    if(args.path){
        params.push(args.path);//图片路径
    }
    if(args.tid){
        params.push(args.tid);//分类id
    }
    if(args.status){
        params.push(args.status);//图片状态
    }
    if(args.recommend){
        params.push(args.recommend);//图片是否推荐
    }
    if(args.category){
        params.push(args.category);//图片品牌分类
    }
    if(args.desc){
        params.push(args.desc);//图片描述
    }
    params.push(args.id);//对id为者个的进行编辑
    picture.edit_b(params, args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == null){
            return res.send({success:false,data:'没有张图片，请再去确认'});
        }else if (result.rowCouunt==0){
            return res.send({success:false,data:'很抱歉，编辑失败，请重试！'});
        }else {
            return res.send({success:true,data:'恭喜您,编辑成功'});
        }
    });
};
/**
 * 后台批量编辑图片状态
 * @param req
 * @param res
 */
exports.upd_status = function(req, res){
    const args = req.body;
    if(!args.ids){//要编辑的分类的id的数组集合
        return res.send({succeaa:false,data:'请至少选择一张图片，进行编辑！'});
    }
    if(!args.status){//要编辑成的状态
        return res.send({success:false,data:'请选择状态进行编辑！'});
    }
    if(args.ids.constructor != Array){//编辑的分类id是否是数组集合
        return res.send({succeaa:false,data:'请以数组方式传递要编辑的图片id！'});
    }
    picture.upd_status(args, function(err,result){
        if(err){//报错
            return res.send({success:false,data:err});
        }else if(result.rowCount == 0){//失败
            return res.send({success:false,data:'很遗憾，您编辑图片状态失败！'});
        }else {
            return res.send({success:true,data:'恭喜您，编辑图片状态成功！'});
        }
    });
};
/**
 * 批量编辑图片推荐
 * @param req
 * @param res
 */
exports.upd_recommend = function(req,res){
    const args = req.body;
    if(!args.ids){//要编辑的分类的id的数组集合
        return res.send({succeaa:false,data:'请至少选择一张图片，进行编辑！'});
    }
    if(!args.recommend){//要编辑成的状态
        return res.send({success:false,data:'请选择状态进行编辑！'});
    }
    if(args.ids.constructor != Array){//编辑的分类id是否是数组集合
        return res.send({succeaa:false,data:'请以数组方式传递要编辑的图片id！'});
    }
    picture.upd_recommend(args, function(err,result){
        if(err){//报错
            return res.send({success:false,data:err});
        }else if(result == null){//失败
            return res.send({success:false,data:'您编辑图片都不是正处于推荐的，请确认！'});
        }else if(result == 'exit'){//失败
            return res.send({success:false,data:'您编辑的图片有正在推荐的，请再次检验！'});
        }else {
            return res.send({success:true,data:'恭喜您，编辑图片推荐信息成功！'});
        }
    });
};
/**
 * 后台批量删除图片
 * @param req
 * @param res
 */
exports.remove = function(req, res){
    const args = req.body;
    if(!args.ids){
        return res.send({success:false,data:'请至少选择一张图片进行删除'})
    };
    if(args.ids.constructor != Array){//编辑的分类id是否是数组集合
        return res.send({succeaa:false,data:'请以数组方式传递要删除的图片id！'});
    };
    picture.remove(args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'exit_del'){
            return res.send({success:false,data:'您删除的图片中，存在不可用图片'});
        }else if(result == null){
            return res.send({success:false,data:'删除图片失败'});
        }else {
            let desc = req.user.username+'删除了一批图片';
            const params_sys = [
                req.user.id,
                desc,
                new Date(),
                1
            ];
            systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
            return res.send({success:true,data:'删除图片成功'});
        }
    });
};
/**
 * app 根据分类查图片列表
 * @param req
 * @param res
 */
exports.picture_type = function(req, res){
    const args = req.query;
    const limit = Number(args.limit);
    const page = Number(args.page);
    let date1 =  new Date().getTime();
    let date2 = new Date(date1 - 1000 * 60 * 60 * 6);//6小时之内
    if(!args.type){
        return res.send({success:false,data:'请选择要查看的图片所属分类'});
    }
    if(!limit){
        return res.send({success:false,data:'请选择每页显示的条数'});
    }
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    }
    let params = [];
    if(args.type && args.type !='all'){
        params.push( args.type)
    }
    if(args.userid){
        params.push(args.userid);
    }
    if(args.pid){
        params.push(args.pid);
    }

    if(args.notice == "1"){
        params.push(date2);
    }
    params.push(limit);
    params.push((page-1)*limit);
    params.push(1);
    params.push(1);
    picture.picture_type(params, args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        } else if(result == 'null_type'){
            return res.send({success:false,data:'您所选的分类不可用'});
        }else {
            return res.send({success:true,data:result});
        }
    })
};
/**
 * app 根据分类查图片列表
 * @param req
 * @param res
 */
exports.picture_type_count = function(req, res){
    const args = req.query;
    if(!args.type){
        return res.send({success:false,data:'请选择要查看的图片所属分类'});
    }
    let params = [];
    if(args.type && args.type !='all'){
        params.push( args.type)
    }
    params.push(1);
    params.push(1);
    picture.picture_type_count(params, args, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else {
            return res.send({success:true,data:result.rows[0].count});
        }
    })
};
/**
 * app 用户想要图片
 * @param req
 * @param res
 */
exports.want = function(req, res){
    const args = req.body;
    if(!args.pictureid){
        return res.send({success:false,data:'请选择您想要的图片'});
    }
    const params = [
        args.pictureid,//图片id
        req.user.id,//用户id
        1,
        new Date()
    ];
    picture.want(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_picture'){
            return res.send({success:false,fata:'没有该美物请再次确认'});
        }else if(result == 'exit_logs'){
            return res.send({success:false,fata:'您已经对该美物添加想要，请不要重复添加'});
        }else if(result == null){
            return res.send({success:false,fata:'添加想要失败，请重试'});
        }else {
            return res.send({success:true,data:'恭喜您，对美物添加想要成功',info:result});
        }
    })
};

/**
 * app 用户添加拥有图片
 * @param req
 * @param res
 */
exports.own = function(req, res){
    const args = req.body;
    if(!args.pictureid){
        return res.send({success:false,data:'请选择您想要拥有的图片'});
    }
    const params = [
        args.pictureid,//图片id
        req.user.id,//用户id
        1,
        new Date()
    ];
    picture.own(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_picture'){
            return res.send({success:false,fata:'没有该美物请再次确认'});
        }else if(result == 'exit_logs'){
            return res.send({success:false,fata:'您已经对该美物添加拥有，请不要重复添加'});
        }else if(result == null){
            return res.send({success:false,fata:'添加拥有失败，请重试'});
        }else {
            return res.send({success:true,data:'恭喜您，对美物添加拥有成功',info:result});
        }
    })
};
/**
 * app 用户想要图片
 * @param req
 * @param res
 */
exports.unwant = function(req, res){
    const args = req.body;
    if(!args.pictureid){
        return res.send({success:false,data:'请选择您取消想要的图片'});
    }
    const params = [
        args.pictureid,//图片id
        req.user.id,//用户id
        1
    ];
    picture.unwant(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_picture'){
            return res.send({success:false,fata:'没有该美物请再次确认'});
        }else if(result == 'null_logs'){
            return res.send({success:false,fata:'您尚未对该美物添加想要'});


        }else if(result == null){
            return res.send({success:false,fata:'取消想要失败，请重试'});
        }else {
            return res.send({success:true,data:'取消想要成功',info:result});
        }
    })
};

/**
 * app 用户添加拥有图片
 * @param req
 * @param res
 */
exports.unown = function(req, res){
    const args = req.body;
    if(!args.pictureid){
        return res.send({success:false,data:'请选择您取消拥有的图片'});
    }
    const params = [
        args.pictureid,//图片id
        req.user.id,//用户id
        1
    ];
    picture.unown(params, args, req, function(err, result){
        if(err){
            return res.send({success:false,data:err});
        }else if(result == 'null_picture'){
            return res.send({success:false,fata:'没有该美物请再次确认'});
        }else if(result == 'null_logs'){
            return res.send({success:false,fata:'您尚未对该美物添加拥有'});
        }else if(result == null){
            return res.send({success:false,fata:'取消拥有失败，请重试'});
        }else {
            return res.send({success:true,data:'取消拥有成功',info:result});
        }
    })
};
/**
 * 用户追加的作品列表
 * @param req
 * @param res
 */
exports.add_list = function(req, res){
    const args = req.query;
    if(!args.userid){
        return res.send({success:false,data:'缺少要产看的用户信息'});
    }
    const limit = Number(args.limit);
    const page = Number(args.page);
    if(!limit){
        return res.send({success:false,data:'请选择每页显示的条数'});
    }
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    }
    const params = [
        args.userid,
        1,
        1,
        limit,
        (page-1)*limit
    ];
    picture.add_list(params, args, function(err, result){//去models中执行sql操作
        if(err){
            return res.send({success:false,data:err});//报错
        }else if(result == 'null_user') {
            return res.send({success:true,data:'没有此用户'});//返回信息
        }else {
            return res.send({success:true,data:result});//返回信息
        }
    });
};

/**
 * app用户想要的作品列表
 * @param req
 * @param res
 */
exports.want_list = function(req, res){
    const args = req.query;
    if(!args.userid){
        return res.send({success:false,data:'请选择要查看的用户'});
    }
    const limit = Number(args.limit);
    const page = Number(args.page);
    if(!limit){
        return res.send({success:false,data:'请选择每页显示的条数'});
    }
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    }
    const params1 = [
        args.userid,
        1//类型为图片
    ];
    const params = [
        1,
        1,
        limit,
        (page-1)*limit
    ];
    picture.want_list(params, params1, args, function(err, result){//去models中执行sql操作
        if(err){
            return res.send({success:false,data:err});//报错
        }else if(result == 'null_user') {
            return res.send({success:true,data:'没有此用户'});//返回信息
        }else if(result == 'null') {
            return res.send({success:true,data:[]});//返回信息
        }else {
            return res.send({success:true,data:result});//返回信息
        }
    });
};
/**
 * app用户想要的作品列表
 * @param req
 * @param res
 */
exports.own_list = function(req, res){
    const args = req.query;
    if(!args.userid){
        return res.send({success:false,data:'请选择要产看的用户'});
    }
    const limit = Number(args.limit);
    const page = Number(args.page);
    if(!limit){
        return res.send({success:false,data:'请选择每页显示的条数'});
    }
    if(!page){
        return res.send({success:false,data:'请选择当前页数'});
    }
    const params1 = [
        args.userid,
        1//类型为图片
    ];
    const params = [
        1,
        1,
        limit,
        (page-1)*limit
    ];
    picture.own_list(params, params1, args, function(err, result){//去models中执行sql操作
        if(err){
            return res.send({success:false,data:err});//报错
        }else if(result == 'null') {
            return res.send({success:true,data:[]});//返回信息
        }else if(result == 'null_user') {
            return res.send({success:true,data:'没有此用户'});//返回信息
        }else {
            return res.send({success:true,data:result});//返回信息
        }
    });
};
// /**
//  * 设置图片的首页推荐
//  * @param req
//  * @param res
//  */
// exports.recomment = function(req, res){
//     const args = req.body;
//     if(!args.ids){
//         return res.send({success:false,data:'请选择要推荐的作品'});
//     }
//     if(args.ids.constructor != Array){//编辑的分类id是否是数组集合
//         return res.send({succeaa:false,data:'请以数组方式传递要删除的图片id！'});
//     };
//     picture.recomment(args, function(err, result){//去models执行推荐操作
//         if(err){
//             return res.send({success:false,data:err});//报错
//         }else if(result=='exit_null'){
//             return res.send({success:false,data:'您推荐的作品中包含不可用作品'});
//         }else if(result=='exit_rec'){
//             return res.send({success:false,data:'您推荐的作品中包含已推荐作品'});
//         }else if(result == 'fail'){
//             return res.send({success:false,data:'推荐失败,请重试'});
//         }else{
//             let desc = req.user.username+'设置了一批图片首页推荐';
//             const params_sys = [
//                 req.user.id,
//                 desc,
//                 new Date(),
//                 1
//             ];
//             systemlogs.add_systemlogs(params_sys, function(err, result){});//添加日志
//             return res.send({success:true,data:'推荐作品成功'});
//         }
//     })
// };
/**
 * 想要的其他作品
 * @param req
 * @param res
 */
exports.others = function(req, res){
    const args = req.query;
    if(!args.pictureid){
        return res.send({success:false,data:'请输入作品id'});
    }
    const params = [
        args.pictureid//其他区作品
    ];
    picture.others(params, req, function(err, result){//q去
        if(err){
            return res.send({success:false,data:err});//报错
        }else{
            return res.send({success:true,data:result});
        }
    })

};